<?xml version="1.0" encoding="UTF-8" ?>

<xsd:schema xmlns="http://www.springframework.org/schema/mvc"
		xmlns:xsd="http://www.w3.org/2001/XMLSchema"
		xmlns:beans="http://www.springframework.org/schema/beans"
		xmlns:tool="http://www.springframework.org/schema/tool"
		targetNamespace="http://www.springframework.org/schema/mvc"
		elementFormDefault="qualified"
		attributeFormDefault="unqualified">

	<xsd:import namespace="http://www.springframework.org/schema/beans" schemaLocation="https://www.springframework.org/schema/beans/spring-beans.xsd"/>
	<xsd:import namespace="http://www.springframework.org/schema/tool" schemaLocation="https://www.springframework.org/schema/tool/spring-tool.xsd"/>

	<xsd:element name="annotation-driven">
		<xsd:annotation>
			<xsd:documentation source="java:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><![CDATA[
	Configures the annotation-driven Spring MVC Controller programming model.
	Note that this tag works in Web MVC only, not in Portlet MVC!

	See org.springframework.web.servlet.config.annotation.EnableWebMvc javadoc for details
	on code-based alternatives to enabling annotation-driven Spring MVC support.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:all minOccurs="0">
				<xsd:element name="path-matching" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation><![CDATA[
	Configures the path matching part of the Spring MVC Controller programming model.
	Like annotation-driven, code-based alternatives are also documented in EnableWebMvc javadoc.
						]]></xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:attribute name="suffix-pattern" type="xsd:boolean">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	Whether to use suffix pattern match (".*") when matching patterns to requests. If enabled
	a method mapped to "/users" also matches to "/users.*".

	In 5.2.4, suffix pattern matching was deprecated in order to discourage use of path
	extensions for request mapping and for content negotiation (see deprecation notes on
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping and on
	org.springframework.web.accept.ContentNegotiationManagerFactoryBean and
	also see https://github.com/spring-projects/spring-framework/issues/24179.

	The default value is true but in 5.3 it changes to false.
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="trailing-slash" type="xsd:boolean">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	Whether to match to URLs irrespective of the presence of a trailing slash.
	If enabled a method mapped to "/users" also matches to "/users/".

	The default was changed in 6.0 from true to false in order to support the
	deprecation of the property.
										]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="registered-suffixes-only" type="xsd:boolean">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	Whether suffix pattern matching should work only against path extensions
	explicitly registered when you configure content negotiation.
	This is generally recommended to reduce ambiguity and to
	avoid issues such as when a "." appears in the path for other reasons.

	In 5.2.4, suffix pattern matching was deprecated in order to discourage use of path
	extensions for request mapping and for content negotiation (see deprecation notes on
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping and on
	org.springframework.web.accept.ContentNegotiationManagerFactoryBean and
	also see https://github.com/spring-projects/spring-framework/issues/24179.

	The default value is false.
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="path-helper" type="xsd:string">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	The bean name of the UrlPathHelper to use for resolution of lookup paths.
	Use this to override the default UrlPathHelper with a custom subclass, or to share common UrlPathHelper settings across
	multiple HandlerMappings and MethodNameResolvers.
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="path-matcher" type="xsd:string">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	The bean name of the PathMatcher implementation to use for matching URL paths against registered URL patterns.
	Default is AntPathMatcher.
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="message-converters" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation><![CDATA[
	Configures one or more HttpMessageConverter types to use for converting @RequestBody method parameters and
	@ResponseBody method return values. Using this configuration element is optional.
	HttpMessageConverter registrations provided here will take precedence over HttpMessageConverter types registered
	by default. Also see the register-defaults attribute if you want to turn off default registrations entirely.
						]]></xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:choice maxOccurs="unbounded">
								<xsd:element ref="beans:bean">
									<xsd:annotation>
										<xsd:documentation><![CDATA[
	An HttpMessageConverter bean definition.
										]]></xsd:documentation>
									</xsd:annotation>
								</xsd:element>
								<xsd:element ref="beans:ref">
									<xsd:annotation>
										<xsd:documentation><![CDATA[
	A reference to an HttpMessageConverter bean.
										]]></xsd:documentation>
									</xsd:annotation>
								</xsd:element>
							</xsd:choice>
						</xsd:sequence>
						<xsd:attribute name="register-defaults" type="xsd:boolean" default="true">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	Whether or not default HttpMessageConverter registrations should be added in addition to the ones provided
	within this element.
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="argument-resolvers" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation><![CDATA[
	Configures HandlerMethodArgumentResolver types to support custom controller method argument types.
	Using this option does not override the built-in support for resolving handler method arguments.
	To customize the built-in support for argument resolution configure RequestMappingHandlerAdapter directly.
						]]></xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:choice minOccurs="1" maxOccurs="unbounded">
							<xsd:element ref="beans:bean" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation><![CDATA[
	The HandlerMethodArgumentResolver (or WebArgumentResolver for backwards compatibility) bean definition.
									]]></xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element ref="beans:ref" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation><![CDATA[
	A reference to a HandlerMethodArgumentResolver bean definition.
									]]></xsd:documentation>
									<xsd:appinfo>
										<tool:annotation kind="ref">
											<tool:expected-type type="java:org.springframework.web.method.support.HandlerMethodArgumentResolver"/>
										</tool:annotation>
									</xsd:appinfo>
								</xsd:annotation>
							</xsd:element>
						</xsd:choice>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="return-value-handlers" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation><![CDATA[
	Configures HandlerMethodReturnValueHandler types to support custom controller method return value handling.
	Using this option does not override the built-in support for handling return values.
	To customize the built-in support for handling return values configure RequestMappingHandlerAdapter directly.
						]]></xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:choice minOccurs="1" maxOccurs="unbounded">
							<xsd:element ref="beans:bean" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation><![CDATA[
	The HandlerMethodReturnValueHandler bean definition.
									]]></xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element ref="beans:ref" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation><![CDATA[
	A reference to a HandlerMethodReturnValueHandler bean definition.
									]]></xsd:documentation>
									<xsd:appinfo>
										<tool:annotation kind="ref">
											<tool:expected-type type="java:org.springframework.web.method.support.HandlerMethodReturnValueHandler"/>
										</tool:annotation>
									</xsd:appinfo>
								</xsd:annotation>
							</xsd:element>
						</xsd:choice>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="async-support" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation><![CDATA[
	Configure options for asynchronous request processing.
						]]></xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:all minOccurs="0">
							<xsd:element name="callable-interceptors" minOccurs="0">
								<xsd:annotation>
									<xsd:documentation><![CDATA[
	The ordered set of interceptors that intercept the lifecycle of concurrently executed
	requests, which start after a controller returns a java.util.concurrent.Callable.
									]]></xsd:documentation>
								</xsd:annotation>
								<xsd:complexType>
									<xsd:sequence>
										<xsd:element ref="beans:bean" minOccurs="1" maxOccurs="unbounded">
											<xsd:annotation>
												<xsd:documentation><![CDATA[
	Registers a CallableProcessingInterceptor.
												]]></xsd:documentation>
											</xsd:annotation>
										</xsd:element>
									</xsd:sequence>
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="deferred-result-interceptors" minOccurs="0">
								<xsd:annotation>
									<xsd:documentation><![CDATA[
	The ordered set of interceptors that intercept the lifecycle of concurrently executed
	requests, which start after a controller returns a DeferredResult.
									]]></xsd:documentation>
								</xsd:annotation>
								<xsd:complexType>
									<xsd:sequence>
										<xsd:element ref="beans:bean" minOccurs="1" maxOccurs="unbounded">
											<xsd:annotation>
												<xsd:documentation><![CDATA[
	Registers a DeferredResultProcessingInterceptor.
												]]></xsd:documentation>
											</xsd:annotation>
										</xsd:element>
									</xsd:sequence>
								</xsd:complexType>
							</xsd:element>
						</xsd:all>
						<xsd:attribute name="task-executor" type="xsd:string">
							<xsd:annotation>
								<xsd:documentation source="java:org.springframework.core.task.AsyncTaskExecutor"><![CDATA[
	The bean name of a default AsyncTaskExecutor to use when a controller method returns a "Callable".
	Controller methods can override this default on a per-request basis by returning an AsyncTask.
	By default, a SimpleAsyncTaskExecutor is used which does not re-use threads and is not recommended for production.

	As of 5.0 this executor is also used when a controller returns a reactive type that does streaming
	(e.g. "text/event-stream" or "application/x-ndjson") for the blocking writes to the
	"jakarta.servlet.ServletOutputStream".

								]]></xsd:documentation>
								<xsd:appinfo>
									<tool:annotation kind="ref">
										<tool:expected-type type="java:org.springframework.core.task.AsyncTaskExecutor"/>
									</tool:annotation>
								</xsd:appinfo>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="default-timeout" type="xsd:long">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	Specify the amount of time, in milliseconds, before asynchronous request handling times out.
	In Servlet 3, the timeout begins after the main request processing thread has exited and ends when the request
	is dispatched again for further processing of the concurrently produced result. If this value is not set,
	the default timeout of the underlying implementation is used.
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
					</xsd:complexType>
				</xsd:element>
			</xsd:all>
			<xsd:attribute name="conversion-service" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation source="java:org.springframework.core.convert.ConversionService"><![CDATA[
	The bean name of the ConversionService that is to be used for type conversion during field binding.
	This attribute is not required, and only needs to be specified if custom converters need to be configured.
	If not specified, a default FormattingConversionService is registered with converters to/from common value types.
					]]></xsd:documentation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="java:org.springframework.core.convert.ConversionService"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="validator" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation source="java:org.springframework.validation.Validator"><![CDATA[
	The bean name of the Validator that is to be used to validate Controller model objects.
	This attribute is not required, and only needs to be specified if a custom Validator needs to be configured.
	If not specified, JSR-303 validation will be installed if a JSR-303 provider is present on the classpath.
					]]></xsd:documentation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="java:org.springframework.validation.Validator"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="content-negotiation-manager" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation source="java:org.springframework.web.accept.ContentNegotiationManager"><![CDATA[
	The bean name of a ContentNegotiationManager that is to be used to determine requested media types.
	If not specified, a default ContentNegotiationManager is configured that checks the request path extension
	first and the "Accept" header second where path extensions such as ".json", ".xml", ".atom", and ".rss" are
	recognized if Jackson, JAXB2, or the Rome libraries are available. As a fallback option, the path extension
	is also used to perform a lookup through the ServletContext and the Java Activation Framework (if available).
					]]></xsd:documentation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="java:org.springframework.web.accept.ContentNegotiationManager"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="message-codes-resolver" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	The bean name of a MessageCodesResolver to use to build message codes from data binding and validation error codes.
	This attribute is not required.
	If not specified the DefaultMessageCodesResolver is used.
					]]></xsd:documentation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="java:org.springframework.validation.MessageCodesResolver"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="enable-matrix-variables" type="xsd:boolean">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	Matrix variables can appear in any path segment, each matrix variable separated with a ";" (semicolon).
	For example "/cars;color=red;year=2012". By default, they're removed from the URL. If this property
	is set to true, matrix variables are not removed from the URL, and the request mapping pattern
	must use URI variable in path segments where matrix variables are expected. For example "/{cars}".
	Matrix variables can then be injected into a controller method with @MatrixVariable.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="ignore-default-model-on-redirect" type="xsd:boolean">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	By default, the content of the "default" model is used both during rendering and redirect scenarios.
	Alternatively a controller method can declare a RedirectAttributes argument and use it to provide attributes
	for a redirect. Setting this flag to true ensures the "default" model is never used in a redirect scenario
	even if a RedirectAttributes argument is not declared. Setting it to false means the "default" model
	may be used in a redirect if the controller method doesn't declare a RedirectAttributes argument.
	The default setting is false but new applications should consider setting it to true.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:complexType name="content-version-strategy">
		<xsd:annotation>
			<xsd:documentation source="org.springframework.web.servlet.resource.ContentVersionStrategy"><![CDATA[
	A VersionStrategy that calculates an Hex MD5 hashes from the content of the resource and appends it
	to the file name, e.g. "styles/main-e36d2e05253c6c7085a91522ce43a0b4.css".
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="patterns" type="xsd:string" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="fixed-version-strategy">
		<xsd:annotation>
			<xsd:documentation source="org.springframework.web.servlet.resource.FixedVersionStrategy"><![CDATA[
	A VersionStrategy that relies on a fixed version applied as a request path prefix,
	e.g. reduced SHA, version name, release date, etc.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="version" type="xsd:string" use="required"/>
		<xsd:attribute name="patterns" type="xsd:string" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="resource-version-strategy">
		<xsd:annotation>
			<xsd:documentation source="org.springframework.web.servlet.resource.VersionStrategy"><![CDATA[
	A strategy for extracting and embedding a resource version in its URL path.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:choice minOccurs="1" maxOccurs="1">
			<xsd:element ref="beans:bean">
				<xsd:annotation>
					<xsd:documentation source="org.springframework.web.servlet.resource.VersionStrategy"><![CDATA[
	A VersionStrategy bean definition.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element ref="beans:ref">
				<xsd:annotation>
					<xsd:documentation source="org.springframework.web.servlet.resource.VersionStrategy"><![CDATA[
	A reference to a VersionStrategy bean.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:choice>
		<xsd:attribute name="patterns" type="xsd:string" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="version-resolver">
		<xsd:annotation>
			<xsd:documentation source="org.springframework.web.servlet.resource.VersionResourceResolver"><![CDATA[
	Resolves request paths containing a version string that can be used as part of an HTTP caching strategy
	in which a resource is cached with a far future date (e.g. 1 year) and cached until the version,
	and therefore the URL, is changed.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:choice maxOccurs="unbounded">
			<xsd:element type="content-version-strategy" name="content-version-strategy"/>
			<xsd:element type="fixed-version-strategy" name="fixed-version-strategy"/>
			<xsd:element type="resource-version-strategy" name="version-strategy"/>
		</xsd:choice>
	</xsd:complexType>

	<xsd:complexType name="resource-resolvers">
		<xsd:annotation>
			<xsd:documentation source="org.springframework.web.servlet.resource.ResourceResolver"><![CDATA[
	A list of ResourceResolver beans definition and references.
	A ResourceResolver provides mechanisms for resolving an incoming request to an actual Resource and for
	obtaining the public URL path that clients should use when requesting the resource.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:choice maxOccurs="unbounded">
				<xsd:element type="version-resolver" name="version-resolver"/>
				<xsd:element ref="beans:bean">
					<xsd:annotation>
						<xsd:documentation source="org.springframework.web.servlet.resource.ResourceResolver"><![CDATA[
	A ResourceResolver bean definition.
						]]></xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element ref="beans:ref">
					<xsd:annotation>
						<xsd:documentation source="org.springframework.web.servlet.resource.ResourceResolver"><![CDATA[
	A reference to a ResourceResolver bean.
					]]></xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="resource-transformers">
		<xsd:annotation>
			<xsd:documentation source="org.springframework.web.servlet.resource.ResourceTransformer"><![CDATA[
	A list of ResourceTransformer beans definition and references.
	A ResourceTransformer provides mechanisms for transforming the content of a resource.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:choice maxOccurs="unbounded">
				<xsd:element ref="beans:bean">
					<xsd:annotation>
						<xsd:documentation source="org.springframework.web.servlet.resource.ResourceTransformer"><![CDATA[
	A ResourceTransformer bean definition.
						]]></xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element ref="beans:ref">
					<xsd:annotation>
						<xsd:documentation source="org.springframework.web.servlet.resource.ResourceTransformer"><![CDATA[
	A reference to a ResourceTransformer bean.
					]]></xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="resource-chain">
		<xsd:annotation>
			<xsd:documentation source="org.springframework.web.servlet.config.annotation.ResourceChainRegistration"><![CDATA[
	Assists with the registration of resource resolvers and transformers.
	Unless set to "false", the auto-registration adds default Resolvers (a PathResourceResolver) and Transformers
	(CssLinkResourceTransformer, if a VersionResourceResolver has been manually registered).
	The resource-cache attribute sets whether to cache the result of resource resolution/transformation;
	setting this to "true" is recommended for production (and "false" for development).
	A custom Cache can be configured if a CacheManager is provided as a bean reference
	in the "cache-manager" attribute, and the cache name provided in the "cache-name" attribute.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="resolvers" type="resource-resolvers" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="transformers" type="resource-transformers" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
		<xsd:attribute name="resource-cache" type="xsd:boolean" use="required">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Whether the resource chain should cache resource resolution.
	Note that the resource content itself won't be cached, but rather Resource instances.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="auto-registration" type="xsd:boolean" default="true" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Whether to register automatically ResourceResolvers and ResourceTransformers.
	Setting this property to "false" means that it gives developers full control over the registration process.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="cache-manager" type="xsd:string" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	The name of the Cache Manager to cache resource resolution. By default, a ConcurrentCacheMap will be used.
	Since Resources aren't serializable and can be dependent on the application host, one should not use a
	distributed cache but rather an in-memory cache.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="cache-name" type="xsd:string" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
    The cache name to use in the configured cache manager.
    Will use "spring-resource-chain-cache" by default.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="cache-control">
		<xsd:annotation>
			<xsd:documentation source="org.springframework.web.cache.CacheControl"><![CDATA[
	Generates "Cache-Control" HTTP response headers.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="must-revalidate" type="xsd:boolean" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Adds a "must-revalidate" directive in the Cache-Control header.
	This indicates that caches should revalidate the cached response when it's become stale.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="no-cache" type="xsd:boolean" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Adds a "no-cache" directive in the Cache-Control header.
	This indicates that caches should always revalidate cached response with the server.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="no-store" type="xsd:boolean" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Adds a "no-store" directive in the Cache-Control header.
	This indicates that caches should never cache the response.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="no-transform" type="xsd:boolean" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Adds a "no-transform" directive in the Cache-Control header.
	This indicates that caches should never transform (i.e. compress, optimize) the response content.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="cache-public" type="xsd:boolean" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Adds a "public" directive in the Cache-Control header.
	This indicates that any cache MAY store the response.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="cache-private" type="xsd:boolean" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Adds a "private" directive in the Cache-Control header.
	This indicates that the response is intended for a single user and may not be stored by shared caches.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="proxy-revalidate" type="xsd:boolean" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Adds a "proxy-revalidate" directive in the Cache-Control header.
	This directive has the same meaning as the "must-revalidate" directive, except it only applies to shared caches.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="max-age" type="xsd:int" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Adds a "max-age" directive in the Cache-Control header.
	This indicates that the response should be cached for the given number of seconds.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="s-maxage" type="xsd:int" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Adds a "s-maxage" directive in the Cache-Control header.
	This directive has the same meaning as the "max-age" directive, except it only applies to shared caches.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="stale-while-revalidate" type="xsd:int" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Adds a "stale-while-revalidate" directive in the Cache-Control header.
	This indicates that caches may serve the response after it becomes stale up to the given number of seconds.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="stale-if-error" type="xsd:int" use="optional">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Adds a "stale-if-error" directive in the Cache-Control header.
	When an error is encountered, a cached stale response may be used for the given number of seconds.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:element name="resources">
		<xsd:annotation>
			<xsd:documentation
				source="java:org.springframework.web.servlet.resource.ResourceHttpRequestHandler"><![CDATA[
	Configures a handler for serving static resources such as images, js, and, css files with cache headers
	optimized for efficient loading in a web browser. Allows resources to be served out of any path that is
	reachable via Spring's Resource handling.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="cache-control" type="cache-control" minOccurs="0" maxOccurs="1"/>
				<xsd:element name="resource-chain" type="resource-chain" minOccurs="0" maxOccurs="1"/>
			</xsd:sequence>
			<xsd:attribute name="mapping" use="required" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	The URL mapping pattern within the current Servlet context to use for serving resources from this handler,
	such as "/resources/**"
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="location" use="required" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	The resource location from which to serve static content, specified at a Spring Resource pattern.
	Each location must point to a valid directory. Multiple locations may be specified as a comma-separated list,
	and the locations will be checked for a given resource in the order specified. For example, a value of
	"/, classpath:/META-INF/public-web-resources/" will allow resources to be served both from the web app
	root and from any JAR on the classpath  that contains a /META-INF/public-web-resources/ directory,
	with resources in the web app root taking precedence.
	For URL-based resources (e.g. files, HTTP URLs, etc) this property supports a special prefix to
	indicate the charset associated with the URL so that relative paths appended to it can be encoded
	correctly, e.g. "[charset=Windows-31J]https://example.org/path".
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="cache-period" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
						<![CDATA[
	Specifies the cache period for the resources served by this resource handler, in seconds.
	The default is to not send any cache headers but rather to rely on last-modified timestamps only.
	Set this to 0 in order to send cache headers that prevent caching, or to a positive number of
	seconds in order to send cache headers with the given max-age value.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="order" type="xsd:token">
				<xsd:annotation>
					<xsd:documentation>
						<![CDATA[
	Specifies the order of the HandlerMapping for the resource handler.
	The default order is Ordered.LOWEST_PRECEDENCE - 1.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="default-servlet-handler">
		<xsd:annotation>
			<xsd:documentation
				source="java:org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler"><![CDATA[
	Configures a handler for serving static resources by forwarding to the Servlet container's default Servlet.
	Use of this handler allows using a "/" mapping with the DispatcherServlet while still utilizing the Servlet
	container to serve static resources.
	This handler will forward all requests to the default Servlet. Therefore it is important that it remains last
	in the order of all other URL HandlerMappings. That will be the case if you use the "annotation-driven" element
	or alternatively if you are setting up your customized HandlerMapping instance be sure to set its "order"
	property to a value lower than that of the DefaultServletHttpRequestHandler, which is Integer.MAX_VALUE.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:attribute name="default-servlet-name" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	The name of the default Servlet to forward to for static resource requests. The handler will try to
	autodetect the container's default Servlet at startup time using a list of known names. If the default
	Servlet cannot be detected because of using an unknown container or because it has been manually configured,
	the servlet name must be set explicitly.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="interceptors">
		<xsd:annotation>
			<xsd:documentation><![CDATA[
	The ordered set of interceptors that intercept HTTP Servlet Requests handled by Controllers.
	Interceptors allow requests to be pre/post processed before/after handling.
	Each interceptor must implement the org.springframework.web.servlet.HandlerInterceptor or
	org.springframework.web.context.request.WebRequestInterceptor interface.
	The interceptors in this set are automatically detected by every registered HandlerMapping.
	The URI paths each interceptor applies to are configurable.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:choice maxOccurs="unbounded">
				<xsd:choice>
					<xsd:element ref="beans:bean">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Registers an interceptor that intercepts every request regardless of its URI path..
								]]></xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element ref="beans:ref">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Registers an interceptor that intercepts every request regardless of its URI path..
								]]></xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:choice>
				<xsd:element name="interceptor">
					<xsd:annotation>
						<xsd:documentation source="java:org.springframework.web.servlet.handler.MappedInterceptor"><![CDATA[
	Registers an interceptor that interceptors requests sent to one or more URI paths.
						]]></xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="mapping" maxOccurs="unbounded">
								<xsd:complexType>
									<xsd:attribute name="path" type="xsd:string" use="required">
										<xsd:annotation>
											<xsd:documentation><![CDATA[
	A path into the application intercepted by this interceptor.
	Exact path mapping URIs (such as "/myPath") are supported as well as Ant-stype path patterns (such as /myPath/**).
											]]></xsd:documentation>
										</xsd:annotation>
									</xsd:attribute>
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="exclude-mapping" minOccurs="0" maxOccurs="unbounded">
								<xsd:complexType>
									<xsd:attribute name="path" type="xsd:string" use="required">
										<xsd:annotation>
											<xsd:documentation><![CDATA[
	A path into the application that should not be intercepted by this interceptor.
	Exact path mapping URIs (such as "/admin") are supported as well as Ant-stype path patterns (such as /admin/**).
											]]></xsd:documentation>
										</xsd:annotation>
									</xsd:attribute>
								</xsd:complexType>
							</xsd:element>
							<xsd:choice>
								<xsd:element ref="beans:bean">
									<xsd:annotation>
										<xsd:documentation><![CDATA[
		The interceptor's bean definition.
										]]></xsd:documentation>
									</xsd:annotation>
								</xsd:element>
								<xsd:element ref="beans:ref">
									<xsd:annotation>
										<xsd:documentation><![CDATA[
		A reference to an interceptor bean.
										]]></xsd:documentation>
									</xsd:annotation>
								</xsd:element>
							</xsd:choice>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:choice>
			<xsd:attribute name="path-matcher" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation source="java:org.springframework.util.PathMatcher"><![CDATA[
	The bean name of a PathMatcher implementation to use with nested interceptors. This is an optional,
	advanced property required only if using custom PathMatcher implementations that support mapping
	metadata other than the Ant path patterns supported by default.
					]]></xsd:documentation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="java:org.springframework.util.PathMatcher"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="view-controller">
		<xsd:annotation>
			<xsd:documentation source="java:org.springframework.web.servlet.mvc.ParameterizableViewController"><![CDATA[
	Map a simple (logic-less) view controller to a specific URL path (or pattern)
	in order to render a response with a pre-configured status code and view.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:attribute name="path" type="xsd:string" use="required">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	The URL path (or pattern) the controller is mapped to.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="view-name" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	Set the view name to return. Optional.

	If not specified, the view controller will return null as the
	view name in which case the configured RequestToViewNameTranslator
	will select the view name. The DefaultRequestToViewNameTranslator
	for example translates "/foo/bar" to "foo/bar".
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="status-code" type="xsd:int">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	Set the status code to set on the response. Optional.
	If not set the response status will be 200 (OK).
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="redirect-view-controller">
		<xsd:annotation>
			<xsd:documentation source="java:org.springframework.web.servlet.mvc.ParameterizableViewController"><![CDATA[
	Map a simple (logic-less) view controller to the given URL path (or pattern)
	in order to redirect to another URL.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:attribute name="path" type="xsd:string" use="required">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	The URL path (or pattern) the controller is mapped to.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="redirect-url" type="xsd:string" use="required">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	By default, the redirect URL is expected to be relative to the current ServletContext,
	i.e. as relative to the web application root.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="status-code" type="xsd:int">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	Set the specific redirect 3xx status code to use.

	If not set, org.springframework.web.servlet.view.RedirectView
	will select MOVED_TEMPORARILY (302) by default.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="context-relative" type="xsd:boolean">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	Whether to interpret a given redirect URL that starts with a slash ("/")
	as relative to the current ServletContext, i.e. as relative to the web
	application root. The default is "true".
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="keep-query-params" type="xsd:boolean">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	Whether to propagate the query parameters of the current request through
	to the target redirect URL. The default is "false".
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="status-controller">
		<xsd:annotation>
			<xsd:documentation source="java:org.springframework.web.servlet.mvc.ParameterizableViewController"><![CDATA[
	Map a simple (logic-less) controller to the given URL path (or pattern) in order to
	sets the response status to the given code without rendering a body.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:attribute name="path" type="xsd:string" use="required">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	The URL path (or pattern) the controller is mapped to.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="status-code" type="xsd:int" use="required">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	The status code to set on the response.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:complexType name="contentNegotiationType">
		<xsd:all>
			<xsd:element name="default-views" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:choice maxOccurs="unbounded">
							<xsd:element ref="beans:bean">
								<xsd:annotation>
									<xsd:documentation><![CDATA[
	A bean definition for an org.springframework.web.servlet.View class.
									]]></xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element ref="beans:ref">
								<xsd:annotation>
									<xsd:documentation><![CDATA[
	A reference to a bean for an org.springframework.web.servlet.View class.
									]]></xsd:documentation>
								</xsd:annotation>
							</xsd:element>
						</xsd:choice>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
		<xsd:attribute name="use-not-acceptable" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Indicate whether a 406 Not Acceptable status code should be returned if no suitable
	view can be found.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="urlViewResolverType">
		<xsd:attribute name="prefix" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	The prefix that gets prepended to view names when building a URL.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="suffix" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	The suffix that gets appended to view names when building a URL.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="cache-views" type="xsd:boolean">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Enable or disable the caching of resolved views.
	Default is "true": caching is enabled.
	Disable this only for debugging and development.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="view-class" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	The view class that should be used to create views.
	Configure this if you want to provide a custom View implementation, typically a sub-class of the expected View type.
				]]></xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="java:java.lang.Class"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="view-names" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Set the view names (or name patterns) that can be handled by this view resolver.
	View names can contain simple wildcards such that 'my*', '*Report' and '*Repo*'
	will all match the view name 'myReport'.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:element name="view-resolvers">
		<xsd:annotation>
			<xsd:documentation><![CDATA[
	Configure a chain of ViewResolver instances to resolve view names returned from
	controllers into actual view instances to use for rendering.

	All registered resolvers are wrapped in a single (composite) ViewResolver
	with its order property set to 0 so that other external resolvers may be ordered
	before or after it.

	When content negotiation is enabled the order property is set to highest priority
	instead with the ContentNegotiatingViewResolver encapsulating all other registered
	view resolver instances. That way the resolvers registered through the MVC namespace
	form self-encapsulated resolver chain.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:choice minOccurs="1" maxOccurs="unbounded">
				<xsd:element name="content-negotiation" type="contentNegotiationType">
					<xsd:annotation>
						<xsd:documentation><![CDATA[
	Registers a ContentNegotiatingViewResolver with the list of all other registered
	ViewResolver instances used to set its "viewResolvers" property. See the javadoc
	of ContentNegotiatingViewResolver for more details.
						]]></xsd:documentation>
					</xsd:annotation>
				</xsd:element>
					<xsd:element name="jsp" type="urlViewResolverType">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Register an InternalResourceViewResolver bean for JSP rendering.
	By default, "/WEB-INF/" is registered as a view name prefix and ".jsp" as a suffix.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="freemarker" type="urlViewResolverType">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Register a FreeMarkerViewResolver.
	By default, ".ftl" is configured as a view name suffix.
	To configure FreeMarker you must also add a top-level <mvc:freemarker-configurer> element
	or declare a FreeMarkerConfigurer bean.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="groovy" type="urlViewResolverType">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Register a GroovyMarkupViewResolver.
	By default, ".tpl" is configured as a view name suffix.
	To configure the Groovy markup template engine you must also add a top-level <mvc:groovy-configurer> element
	or declare a GroovyMarkupConfigurer bean.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="script-template" type="urlViewResolverType">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Register a ScriptTemplateViewResolver.
	To configure the Script engine you must also add a top-level <mvc:script-template-configurer> element
	or declare a ScriptTemplateConfigurer bean.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="bean-name" maxOccurs="1">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Register a BeanNameViewResolver bean.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element ref="beans:bean">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Register a ViewResolver as a direct bean declaration.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element ref="beans:ref">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Register a ViewResolver through references to an existing bean declaration.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:element>
			</xsd:choice>
			<xsd:attribute name="order" type="xsd:int">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	ViewResolver's registered through this element are encapsulated in an
	instance of org.springframework.web.servlet.view.ViewResolverComposite and
	follow the order of registration. This attribute determines the order of the
	ViewResolverComposite itself relative to any additional ViewResolver's
	(not registered through this element) present in the Spring configuration
	By default this property is not set, which means the resolver is ordered at
	Ordered.LOWEST_PRECEDENCE unless content negotiation is enabled in which case
	the order (if not set explicitly) is changed to Ordered.HIGHEST_PRECEDENCE.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="freemarker-configurer">
		<xsd:annotation>
			<xsd:documentation><![CDATA[
	Configure FreeMarker for view resolution by registering a FreeMarkerConfigurer bean.
	This is a shortcut alternative to declaring a FreeMarkerConfigurer bean directly.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="template-loader-path" minOccurs="0" maxOccurs="unbounded">
					<xsd:complexType>
						<xsd:attribute name="location" type="xsd:string" use="required">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	The location of a FreeMarker template loader path (or a Spring resource pattern).
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="groovy-configurer">
		<xsd:annotation>
			<xsd:documentation><![CDATA[
	Configure the Groovy markup template engine for view resolution by registering a GroovyMarkupConfigurer bean.
	This is a shortcut alternative to declaring a GroovyMarkupConfigurer bean directly.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:attribute name="auto-indent" type="xsd:boolean">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	Whether you want the template engine to render indents automatically.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="cache-templates" type="xsd:boolean">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	If enabled templates are compiled once for each source (URL or File).
	It is recommended to keep this flag to true unless you are in development mode
	and want automatic reloading of templates.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="resource-loader-path" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	The Groovy markup template engine resource loader path via a Spring resource location.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="script-template-configurer">
		<xsd:annotation>
			<xsd:documentation><![CDATA[
	Configure the script engine for view resolution by registering a ScriptTemplateConfigurer
	bean. This is a shortcut alternative to declaring a ScriptTemplateConfigurer bean directly.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:sequence>
			<xsd:element name="script" minOccurs="0" maxOccurs="unbounded">
					<xsd:complexType>
						<xsd:attribute name="location" type="xsd:string" use="required">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	The location of the script to be loaded by the script engine (library or user provided).
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
			<xsd:attribute name="engine-name" type="xsd:string" use="required">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	The script engine name to use by the view.
	The script engine must implement Invocable.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="render-object" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	The object where belong the render function.
	For example, in order to call Mustache.render(), renderObject
	should be set to Mustache and renderFunction to render.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="render-function" type="xsd:string" use="required">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	Set the render function name.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="content-type" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	Set the content type to use for the response (text/html by default).
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="charset" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	Set the charset used to read script and template files (UTF-8 by default).
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="resource-loader-path" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	The script engine resource loader path via a Spring resource location.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="shared-engine" type="xsd:boolean">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	When set to false, use thread-local ScriptEngine instances instead of one single shared
	instance. This flag should be set to false for those using non thread-safe script engines
	with templating libraries not designed for concurrency, like Handlebars or React
	running on Nashorn for example. In this case, Java 8u60 or greater is required due to
	this bug: https://bugs.openjdk.java.net/browse/JDK-8076099.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="cors">
		<xsd:annotation>
			<xsd:documentation><![CDATA[
	Configure cross origin requests processing.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="mapping" minOccurs="1" maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:documentation><![CDATA[
	Enable cross origin requests processing on the specified path pattern.
	The following defaults are applied to the resulting CorsRegistration:
	 - Allow all origins.
	 - Allow "simple" methods {@code GET}, {@code HEAD} and {@code POST}.
	 - Allow all headers.
	 - Set max age to 1800 seconds (30 minutes).
						]]></xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:attribute name="path" type="xsd:string" use="required">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	A path into the application that should handle CORS requests.
	Exact path mapping URIs (such as "/admin") are supported as well as Ant-stype path patterns (such as /admin/**).
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="allowed-origins" type="xsd:string">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	Comma-separated list of origins to allow, e.g. "https://domain1.com, https://domain2.com".
	The special value "*" allows all domains (default).

	For matching pre-flight and actual requests the "Access-Control-Allow-Origin"
	response header is set either to the matched domain value or to "*".
	Keep in mind however that the CORS spec does not allow "*" when allow-credentials
	is set to true and that is rejected as of 5.3. See allowed-origin-patterns for
	further options.

	By default all origins are allowed unless allowed-origin-patterns is also set
	in which case allowed-origin-patterns is used instead.

	Note that CORS checks use values from "Forwarded" (RFC 7239), "X-Forwarded-Host",
	"X-Forwarded-Port", and "X-Forwarded-Proto" headers, if present, in order to reflect
	the client-originated address. Consider using the ForwardedHeaderFilter in order to
	choose from a central place whether to extract and use such headers, or whether to
	discard them. See the Spring Framework reference for more on this filter.
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="allowed-origin-patterns" type="xsd:string">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	Alternative to allowed-origins that supports origins declared via patterns.
	In contrast to allowed-origins which does support the special value "*", this
	property allows more flexible patterns, e.g. "*.domain1.com". Furthermore it
	always sets the "Access-Control-Allow-Origin" response header to the matched
	origin and never to "*" nor to any other pattern and therefore can be used in
	combination with allowCredentials set to true.

	By default this is not set.
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="allowed-methods" type="xsd:string">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	Comma-separated list of HTTP methods to allow, e.g. "GET, POST".
	The special value "*" allows all method.
	By default GET, HEAD and POST methods are allowed.
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="allowed-headers" type="xsd:string">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	Comma-separated list of headers that a pre-flight request can list as allowed for use during an actual request.
	The special value of "*" allows actual requests to send any header (default).
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="exposed-headers" type="xsd:string">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	Comma-separated list of response headers other than simple headers (i.e.
	Cache-Control, Content-Language, Content-Type, Expires, Last-Modified, Pragma) that an
	actual response might have and can be exposed.
	The special value "*" allows all headers to be exposed for non-credentialed requests.
	Empty by default.
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="allow-credentials" type="xsd:boolean">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	Whether the browser should send credentials, such as cookies along with
	cross domain requests, to the annotated endpoint. The configured value is
	set on the "Access-Control-Allow-Credentials" response header of
	preflight requests.

	NOTE: Be aware that this option establishes a high level of trust with
	the configured domains and also increases the surface attack of the web
	application by exposing sensitive user-specific information such as
	cookies and CSRF tokens.

	By default, this is not set in which case the
	"Access-Control-Allow-Credentials" header is also not set and
	credentials are therefore not allowed.
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="max-age" type="xsd:long">
							<xsd:annotation>
								<xsd:documentation><![CDATA[
	How long, in seconds, the response from a pre-flight request can be cached by clients.
	1800 seconds (30 minutes) by default.
								]]></xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>

</xsd:schema>
